<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			//第一个问题
			// console.log(1);
			// //js是单线程语言,但是允许创建多个任务
			// setTimeout(function() {
			// 	console.log(3);
			// }, 1000);

			// console.log(2);

			//第二个问题
			console.log(1);

			setTimeout(function() {
				console.log(3);
			}, 0);

			console.log(2);
			//同步任务
			// 同步任务在主线程上执行,形成一个执行栈

			//异步任务
			//js的异步是通过回调函数实现的
			//一般而言,异步任务有以下三种类型
			//1.普通时间,如click、resize等等
			//2.资源加载,如load,error等等
			//3.定时器,包括setInterval、setTimeout等等

			//异步任务相关回调函数添加到任务队列中(队列任务也成为消息队列)

			//js执行机制
			//先执行执行栈中的同步任务
			//异步任务(回调函数)放入任务队列中
			//一旦执行栈中所有同步任务执行完毕,系统会按次序读取任务队列中的异步任务,
			//将异步任务读取到执行栈中开始执行
		</script>
	</body>
</html>
